"""
1.位置参数
2.关键字参数
调用时，参数的传递一:key=value的形式
3.默认参数
函数定义时，就提供了默认值
调用时，可以传递也可以不传
4.可变参数
参数个数不确定，可变，不定长
* 位置传递
** 关键字传递
"""
def user_info1(name,age,gender):
    print(f'姓名:{name},年龄:{age},姓名:{gender}')

# 调用时，参数的个数和顺序与定义一致
user_info1('tom',18,'male')

# 个数必须一致
# user_info1('zs',19)
# 顺序不一致的话，赋值也会乱
# user_info1(19，'zs','ls')

# 调用时，使用“key=value”形式传递参数
# 关键字参数，顺序没有关系
user_info1(age=18,name='lily',gender='female')


def user_info2(name,age,gender='male'):
    print(f'姓名{name},年龄:{age},性别{gender}')

user_info2('zs',18)
user_info2('ls',19,'female')

def user_info3(*args):
    return args

def user_info4(**kwargs):
    return kwargs

# 调用 用位置传递，返回的是元组类型
result3=user_info3(1,45,7,9)
print(result3)
# 调用关键字，返回的是字典
result4=user_info4(name='tom',age=18)
print(result4)

def sum1(*args):
    result=0;
    for i in args:
        result+=i
    return result
result5=sum1(3,5,7)

print(result5)

def charge(x,y):
    x,y=y,x
    return x,y
tu=charge(10,9)
print(f'x={tu[0]},y={tu[1]}')

import math
def up1(factor=1.01,days=365):
    return math.pow(factor,days)
day_up=up1()
day_down=up1(0.99)
print(f'进步{round(day_up,2)}')
print(f'进步{round(day_down,2)}')



def up2(factor=0.01,days=365):
    result=1
    for i in range(1,366):
        if i % 7 in[6,0]:
            result=result*(1-factor)
        else:
            result*=(1+factor)
    return result
day_up2=up2()
print(f'{round(day_up2,2)}')

